#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<math.h>
//int my_strlen(const char* pa)
//{
//	char* pb = pa;
//	while (*pb)
//	{
//		pb++;
//	}
//	return pb - pa;
//}
//char* my_strcpy(char* dest, const char* src)
//{
//	char* ptr = dest;
//	while (*dest++ = *src++);
//	return ptr;
//}
//int my_strcmp(const char* dest, const char* src)
//{
//	if (*dest == *src)
//	{
//		dest++;
//		src++;
//		if (!*dest)
//			return 0;
//	}
//	if (*dest > *src)
//		return 1;
//	else
//		return -1;
//}
//char* my_strcat(char* dest, const char* src)
//{
//	char* ptr = dest;
//	while (*dest)
//	{
//		dest++;
//	}
//	while (*dest++ = *src++);
//	return ptr;
//}
char* my_strstr(const char* string, const char* strCharSet)
{
	if (!*strCharSet)
	{
		return string;
	}
	while (*string)
	{
		char* ptr = string;
		while (*string == *strCharSet &&*strCharSet!='\0'&&*string!='\0')
		{
			string++;
			strCharSet++;
		}
		if (*strCharSet == '\0')
			return ptr;
		if (*string == '\0')
			return NULL;
		string++;
	}
	return NULL;

}
void* my_memmove(void* dest,const void* src, size_t count)
{
	void* ptr = dest;
	if (dest < src)
	{
		while (count--)
		{
			*(char*)dest = *(char*)src;
			++(char*)dest;
			++(char*)src;
		}
	}
	if(dest > src)
	{
		while (count--)
		{
			*((char*)dest + count) = *((char*)src + count);
		}
		
	}
	return ptr;
}


//int main()
//{
//	char arr[1000] = "abcedefg";
//	char arr1[100] = "zlf";
//	//printf("%s", my_memmove(arr+1, arr,3));
//	//gets(arr);
//	//printf("%d", my_strcmp(arr,arr1));
//	printf("%s", my_memmove(arr + 1, arr, 3));
//	return 0;
//}
//void* my_memmove(void* dst, const void* src, size_t count)
//{
//	void* ret = dst;
//	if (dst <= src || (char*)dst >= ((char*)src + count)) {
//		while (count--) {
//			*(char*)dst = *(char*)src;
//			dst = (char*)dst + 1;
//			src = (char*)src + 1;
//		}
//	}
//	else {
//		/*
//		* Overlapping Buffers
//		* copy from higher addresses to lower addresses
//		*/
//		dst = (char*)dst + count - 1;
//		src = (char*)src + count - 1;
//		while (count--) {
//			*(char*)dst = *(char*)src;
//			dst = (char*)dst - 1;
//			src = (char*)src - 1;
//		}
//	}
//	return(ret);
//}
int main()
{
	char arr[] = "abcdefg";
	char arr1[100] = "zlf";
	//printf("%s", my_memmove(arr+1, arr,3));
	//gets(arr);
	//printf("%d", my_strcmp(arr,arr1));
	printf("%s\n", (char*)my_memmove(arr+1, arr, 3)-1);
	printf("%s", arr);
	return 0;
}
